const { think } = require('thinkjs');

module.exports = class extends think.Service {
  constructor() {
    super();
    this.passwordService = think.service('password');
  }

  /**
   * 通过账号判断用户是否存在
   * @param {string} account 账号
   * @param {string} password 密码
   * @returns {Promise<number>} -1 用户不存在，-2 密码不正确，id 用户唯一标识
   */
  async isByAccountAndPassword(account, password) {
    const model = this.model('user');

    // 通过账号查找用户
    const data = await model.where({ account }).find();
    // 如果通过账号查找不到
    const isEmpty = think.isEmpty(data);
    if (isEmpty) {
      return -1;
    }

    // 判断密码是否匹配，匹配返回用户唯一标识，不匹配返回 -2
    const match = await this.passwordService.compare(password, data.password);
    if (match) {
      return data.id;
    } else {
      return -2;
    }
  }
};
